#ifndef __OLED_H
#define __OLED_H

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include "oled_lib.h"

enum {
OLED_CMD, 	//写命令
OLED_DATA	//写数据
};

#define Max_Column	128
#define Max_Row		64


/***************************
 * 函数名:数据发送函数类型
 * 参数1：dat1  数据帧头
 * 参数2：dat2  数据帧头
 * 参数3：*data 数据指针
 * 参数4：len   指针中的数据长度
 * 返回值：
 * 作者:
 * 说明: 需要定义此类型的IIC数据发送函数，函数中实现将两个帧头与数据打包发送到OLED屏的IIC总线上。
 *       需要发送的数据为 dat1+dat2+dat* 共 len+2 个字节
 * **************************/
typedef void (*OLED_Write_Data_t)(uint8_t dat1,uint8_t dat2,const uint8_t *data, uint16_t len);

/* OLED控制用函数 */
void OLED_Write_Data(const uint8_t *data, uint16_t len);
void OLED_WR_Byte(uint8_t dat, uint8_t cmd);
void OLED_Set_Pos(uint8_t x, uint8_t y);
uint32_t oled_pow(uint8_t m, uint8_t n);

/* OLED功能函数 */
void OLED_Fill(uint8_t fill_Data);
void OLED_Display_On(void);
void OLED_Display_Off(void);
void OLED_ShowChar(uint8_t x, uint8_t y, char chr, uint8_t Char_Size);
void OLED_ShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size2);
void OLED_ShowString(uint8_t x, uint8_t y, char *chr, uint8_t Char_Size);
//显示一个16x16点的中文
void OLED_ShowCHinese(uint8_t x, uint8_t y, const uint8_t *p);
void OLED_DrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *p);

void Oled_Init(uint8_t  addr,OLED_Write_Data_t wdcb);

#endif 
